<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vue.set的使用</title>
    <!-- 引入Vue.js -->
    <script src="../js/vue.js"></script>
  </head>
  <body>
    <!-- 准备好一个容器 -->
    <div id="root">
      <h1>学校信息</h1>
      <!-- <h2>校长：{{leader}}</h2> -->
      <h2>名称：{{name}}</h2>
      <h2>地址：{{address}}</h2>
      <h1>学生信息</h1>
      <h2>姓名:{{student.name}}</h2>
      <h2 v-show="student.sex">性别:{{student.sex}}</h2>
      <button @click="addSex">点我为学生添加性别</button>
      <h2>真实年龄:{{student.age.rAge}},对外{{student.age.sAge}}</h2>
      <h2>朋友们</h2>
      <ul>
        <li v-for="(friend,index) of student.friends" :key="index">
          {{friend.name}}-{{friend.age}}
        </li>
      </ul>
    </div>
  </body>
  <script>
    const vm = new Vue({
      el: "#root",
      data() {
        return {
          // 当修改 data下的属性时 Vue 都会监测到，并重新进行解析模板
          name: "xx大学",
          address: "xx路xx号",
          student: {
            name: "Tom",
            age: {
              rAge: "40",
              sAge: "18",
            },
            friends: [
              { name: "Jack", age: "19" },
              { name: "Tony", age: "39" },
            ],
          },
        };
      },
      methods: {
        addSex() {
          // 为student添加属性并会被动态监测到
          // 方法一
          Vue.set(this.student, "sex", "男");
          // 方法二
          // vm.$set(this.student, "sex", "女");

          // 注意：Vue.set(traget,key,value)只能为data中某一个对象增加属性,不能为data增加属性
          // Vue.set(vm, "leader", "xxxx"); 报错
        },
      },
    });
  </script>
</html>
